#ifndef _UGFW_ERROR_H_
#define _UGFW_ERROR_H_

#include "ofc/ofc_types.h"
#include "hcc/hcc_error_code.h"
#include "hcc/hcc_error_code_mod.h"

#ifdef __cplusplus
extern "C" {
#endif

#define HCC_MAKE_MOD_MID_UGFW_ERROR(err_code, err_level) (Int32)HCC_ERROR(HCC_MAKE_MID_WARE_ERROR(kHccMidWareUgfw, err_code, err_level))

// 升级固件组件 : None
typedef Int32 Ugfw_TErrorCode;
// enum {
#define kUgfw_ErrCode_Success  HCC_ERROR_SUCCESS  ///< None
#define kUgfw_ErrCode_Fail  HCC_MAKE_MOD_MID_UGFW_ERROR(1, HCC_ERROR_LEVEL_ERROR)  ///< 失败(通常)
#define kUgfw_ErrCode_WrongOperatorState  HCC_MAKE_MOD_MID_UGFW_ERROR(2, HCC_ERROR_LEVEL_ERROR)  ///< 错误的操作状态
#define kUgfw_ErrCode_NotSupportOperator  HCC_MAKE_MOD_MID_UGFW_ERROR(3, HCC_ERROR_LEVEL_ERROR)  ///< 不支持的操作
#define kUgfw_ErrCode_BlkDevOpsNotInited  HCC_MAKE_MOD_MID_UGFW_ERROR(4, HCC_ERROR_LEVEL_ERROR)  ///< 块设备操作函数集无效
#define kUgfw_ErrCode_BlkDevNotOpenned  HCC_MAKE_MOD_MID_UGFW_ERROR(5, HCC_ERROR_LEVEL_ERROR)  ///< 块设备未打开
#define kUgfw_ErrCode_BlkDevNotExists  HCC_MAKE_MOD_MID_UGFW_ERROR(6, HCC_ERROR_LEVEL_ERROR)  ///< 块设备不存在
#define kUgfw_ErrCode_Param  HCC_MAKE_MOD_MID_UGFW_ERROR(7, HCC_ERROR_LEVEL_ERROR)  ///< 参数错误
#define kUgfw_ErrCode_DevOpenned  HCC_MAKE_MOD_MID_UGFW_ERROR(8, HCC_ERROR_LEVEL_ERROR)  ///< 设备已经打开
#define kUgfw_ErrCode_ParDevNotOpenned  HCC_MAKE_MOD_MID_UGFW_ERROR(9, HCC_ERROR_LEVEL_ERROR)  ///< 分区设备未打开
#define kUgfw_ErrCode_Io  HCC_MAKE_MOD_MID_UGFW_ERROR(10, HCC_ERROR_LEVEL_ERROR)  ///< IO错误
#define kUgfw_ErrCode_WrongCrc  HCC_MAKE_MOD_MID_UGFW_ERROR(11, HCC_ERROR_LEVEL_ERROR)  ///< 校验错误
#define kUgfw_ErrCode_OtaPartNotDefined  HCC_MAKE_MOD_MID_UGFW_ERROR(12, HCC_ERROR_LEVEL_ERROR)  ///< OTA分区未定义
#define kUgfw_ErrCode_BkpPartNotDefined  HCC_MAKE_MOD_MID_UGFW_ERROR(13, HCC_ERROR_LEVEL_ERROR)  ///< 备份分区未定义
#define kUgfw_ErrCode_PartitionNotFound  HCC_MAKE_MOD_MID_UGFW_ERROR(14, HCC_ERROR_LEVEL_ERROR)  ///< 待升级的分区未定义
#define kUgfw_ErrCode_PartitionNotLocated  HCC_MAKE_MOD_MID_UGFW_ERROR(15, HCC_ERROR_LEVEL_ERROR)  ///< 未定位到待升级的分区
#define kUgfw_ErrCode_NotSupport  HCC_MAKE_MOD_MID_UGFW_ERROR(16, HCC_ERROR_LEVEL_ERROR)  ///< 不支持
#define kUgfw_ErrCode_OutOfPartitionCap  HCC_MAKE_MOD_MID_UGFW_ERROR(17, HCC_ERROR_LEVEL_ERROR)  ///< 超出分区容量
#define kUgfw_ErrCode_OutOfBkpPartSpace  HCC_MAKE_MOD_MID_UGFW_ERROR(18, HCC_ERROR_LEVEL_ERROR)  ///< 备份分区不足以执行升级前的备份
#define kUgfw_ErrCode_PrecondNotEstablished  HCC_MAKE_MOD_MID_UGFW_ERROR(19, HCC_ERROR_LEVEL_ERROR)  ///< 条件不满足
#define kUgfw_ErrCode_CompareVerify  HCC_MAKE_MOD_MID_UGFW_ERROR(20, HCC_ERROR_LEVEL_ERROR)  ///< 验证错误
#define kUgfw_ErrCode_UnspportedIfr  HCC_MAKE_MOD_MID_UGFW_ERROR(21, HCC_ERROR_LEVEL_ERROR)  ///< 不支持的接口
#define kUgfw_ErrCode_ProtectedPartition  HCC_MAKE_MOD_MID_UGFW_ERROR(22, HCC_ERROR_LEVEL_ERROR)  ///< 不能操作保护分区(如boot1/boot2)
#define kUgfw_ErrCode_Cancelled  HCC_MAKE_MOD_MID_UGFW_ERROR(23, HCC_ERROR_LEVEL_ERROR)  ///< 已经取消
#define kUgfw_ErrCode_AlwaysFail  HCC_MAKE_MOD_MID_UGFW_ERROR(24, HCC_ERROR_LEVEL_ERROR)  ///< 尝试多次总是失败
#define kUgfw_ErrCode_InvalidImgFmt  HCC_MAKE_MOD_MID_UGFW_ERROR(25, HCC_ERROR_LEVEL_ERROR)  ///< 无效的映像文件格式
#define kUgfw_ErrCode_WrongImgHeadCrc  HCC_MAKE_MOD_MID_UGFW_ERROR(26, HCC_ERROR_LEVEL_ERROR)  ///< 映像文件头CRC错误
#define kUgfw_ErrCode_WrongImgItemCrc  HCC_MAKE_MOD_MID_UGFW_ERROR(27, HCC_ERROR_LEVEL_ERROR)  ///< 映像数据CRC错误
#define kUgfw_ErrCode_WrongImgSize  HCC_MAKE_MOD_MID_UGFW_ERROR(28, HCC_ERROR_LEVEL_ERROR)  ///< 映像尺寸错误
#define kUgfw_ErrCode_NoConfirm  HCC_MAKE_MOD_MID_UGFW_ERROR(29, HCC_ERROR_LEVEL_ERROR)  ///< 无确认
// };


#ifdef __cplusplus
}  // extern "C"
#endif

#endif // _UGFW_ERROR_H_


